/**
 * 邮箱验证
 * @param {string} s - 要验证的邮箱字符串
 * @returns {boolean} 是否为有效邮箱
 */
export const isEmail = (s) =>
    /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(s);

/**
 * 手机号码验证
 * @param {string} s - 要验证的手机号码
 * @returns {boolean} 是否为有效手机号码
 */
export const isMobile = (s) => /^1[3-9]\d{9}$/.test(s);

/**
 * 电话号码验证
 * @param {string} s - 要验证的电话号码
 * @returns {boolean} 是否为有效电话号码
 */
export const isPhone = (s) => /^(\d{3,4}-)?\d{7,8}$/.test(s);

/**
 * URL地址验证
 * @param {string} s - 要验证的URL
 * @returns {boolean} 是否为有效URL
 */
export const isURL = (s) => /^https?:\/\/.+/.test(s);

/**
 * IP地址验证
 * @param {string} s - 要验证的IP地址
 * @returns {boolean} 是否为有效IP地址
 */
export const isIP = (s) =>
    /^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$/.test(
        s,
    );

/**
 * 字符串验证（字母、数字、下划线、中划线、中文）
 * @param {string} s - 要验证的字符串
 * @returns {boolean} 是否为有效字符串
 */
export const isString = (s) => /^[A-Za-z0-9_\-一-龥]+$/.test(s);

/**
 * 数字验证（非负浮点数）
 * @param {string} s - 要验证的数字字符串
 * @returns {boolean} 是否为有效数字
 */
export const isNumber = (s) => /^\d+(\.\d+)?$/.test(s);

/**
 * 银行卡号验证
 * @param {string} s - 要验证的银行卡号
 * @returns {boolean} 是否为有效银行卡号
 */
export const isBank = (s) => /^[1-9]\d{11,18}$/.test(s);

/**
 * 身份证号验证
 * @param {string} s - 要验证的身份证号
 * @returns {boolean} 是否为有效身份证号
 */
export const isIdCard = (s) =>
    /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
        s,
    );

/**
 * 密码强度验证
 * @param {string} s - 要验证的密码
 * @returns {boolean} 是否为强密码（至少8位，包含字母和数字）
 */
export const isStrongPassword = (s) =>
    /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{8,}$/.test(s);

/**
 * 中文验证
 * @param {string} s - 要验证的字符串
 * @returns {boolean} 是否为中文
 */
export const isChinese = (s) => /^[\u4e00-\u9fa5]+$/.test(s);

/**
 * 英文验证
 * @param {string} s - 要验证的字符串
 * @returns {boolean} 是否为英文
 */
export const isEnglish = (s) => /^[A-Za-z]+$/.test(s);
